DataProvider in TestNG | Data Driven Testing
In TestNG, the @DataProvider annotation is used to provide a way to supply multiple sets of data to a single test method. This is useful when you want to run the same test method with different data inputs.
@DataProvider
- You can define a method that returns an array of data, which will be fed into a test method.
- The @DataProvider method can return either a two-dimensional array of Object, Iterator< Object[ ]>, or Object [ ][ ].
- Each row of data will be passed as parameters to the test method during execution.
Syntax
- Define a method with @DataProvider that returns the test data.
- Use the dataProvider attribute in the @Test annotation to link the test method to the data provider.
Test Code
package asc; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; public class DataProviderTest { @Test(dataProvider="dataset") public void test(String username, String password) { System.out.println(username+"============"+password); } @Test(dataProvider="dataset1") public void test1(String username, String password, String test) { System.out.println(username+"===="+password+"===="+test); } @DataProvider public Object[][] dataset1(){ return new Object[][] { {"username","password","test"}, {"username1","password1","test1"}, {"username2","password2","test2"}, {"username3","password3","test3"} }; } @DataProvider public Object[][] dataset() { Object[][] dataset = new Object[4][2]; //first row dataset[0][0]="user1"; dataset[0][1]="pass1"; //second row dataset[1][0]="user2"; dataset[1][1]="pass2"; //third row dataset[2][0]="user3"; dataset[2][1]="pass3"; //fourth row dataset[3][0]="user4"; dataset[3][1]="pass4"; return dataset; } }
Run this Code